home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
LAUNCH 17
/
LAUNCH.BIN
/
mac
/
Install These
/
NetSprocket 1.1 GM
/
NetSprocket Release Notes
< prev
next >
Wrap
Text File
|
1997-09-18
|
7KB
|
156 lines
NetSprocket 1.1
Release Notes
---------------
Please report all bugs to sprockets@adr.apple.com!
What's New?
-----------
NetSprocket 1.1 adds CFM-68K support, and has the following fixes and additions:
Ñ The NSpPlayerLeftMessage now includes a field for the name of the player who
left the game. Previously, you only got the playerID, but since the player
was done there was no way to perform a GetInfo to get their name.
CAVEAT I: Be advised that this is a new feature to NetSprocket 1.1 and is
NOT backwards compatible with pre-1.1 builds. If you use this field you must
make sure that your are using NetSprocket 1.1 or newer. You can get the version
number with the NSpGetVersion() call.
In short, make sure that everyone in the game is using 1.1 or newer if you
plan to use this field of the structure.
Ñ Bug that disallowed the creation of more than one game object at a time
has been fixed. You are now only limited by other system resources,
such as memory or networking ports. Keep in mind if you try to host
multiple games that you will get an error back if you try to host multiple
games with the same game name (for AppleTalk) or with the same port (for IP).
Ñ A significant problem was found under heavy flow (traffic) conditions
that could cause data to be delivered out of order. This has been fixed.
Ñ If you specify an empty string (not a null string!) for the "type" parameter
to NSpDoModalJoinDialog, NetSprocket will use the game id (passed to
NSpInitialize) to search for games on the AppleTalk network. This matches
the default behavior for NSpGame_Host.
We have included a new test program that should provide a better example of
how to effectively use NetSprocket. The most important thing to note is how
NetSprocket messages are handled both synchronously and asynchronously. This
method prevents problems where user actions, such as a mouse-down, could
prevent the main event loop from calling NSpMessage_Get, and thereby cause
a buffer overflow problem.
The number one problem we've seen with people using NetSprocket is apps running
out of memory. The reason this happens is that NetSprocket presents a
message API to the application. If you have, say, a 50K message, NetSprocket
doesn't hand that message to the client application until all 50K are received.
This model makes NetSprocket much more suceptible to low memory problems that
other, data-oriented, networking APIs. There are three things you can
do to minimize this kind of problem.
1. Use small messages ( < 1K) as often as is practical
2. Give NetSprocket as much memory as you can spare
3. Use the async message hander
NetSprocket will still function if you don't do these things, but end user
conditions will be much more likely to cause your app problems.
You should always check return values from NetSprocket functions. Failure to
do so is reckles, and will only cause you and your customers headaches.
What's coming?
--------------
Due to the significant changes that have taken place at Apple recently, we
have been forced to cut back out engineering efforts in many areas, including
NetSprocket. The Win95 version will not be ready as planned, and we will
be making changes only in modest increments.
NetSprocket (and the other Sprockets) are still supported, though, and we'll
continue making improvements as needed. Please send bug reports or feature
requests to sprockets@adr.apple.com
Release Components
------------------
NetSprocket Release Notes - this file
NetSprocket.h - the header file to compile with.
NetSprocketLib - release version of the library
NetSprocketDebugLib - debugging version of the library
NewNSpTest - test program
NewNSpTest.╡ - Code Warrior 11 project to build test
NewNSpTest Sources - sources for test program
NetSprocketLib68K - CFM-68K release version
NetSprocketDebugLib68K - CFM-68K debugging version of the library
NewNSpTest68K - new 68K test program
NewNSpTest68K.╡ - Code Warrior 11 project to build test
WARNING: don't place both the debugging and non-debugging versions of the
library in the search path or you will not be sure which version you will be
using.
Dependencies
------------
NetSprocket requires OpenTransport version 1.1.1 or later.
NetSprocket68K requires the CFM-68K 4.0 update, available from Apple
Software Updates
NetSprocket requires the latest Universal Headers -- version 2.1.2 or later.
You can find them on E.T.O. #20, the MacOS SDK CD-ROMs, Apple's web-site, or
a number of other locations.
Getting the Most out of NetSprocket
-----------------------------------
To get the optimal performance out of NetSprocket, design your game to send
"Normal" messages that contain less than 550 bytes of data. This allows
NetSprocket to use datagram-level delivery for both TCP/IP and AppleTalk.
Using "Registered" messages can cause a 2-50% network performance degradation,
depending on a number of factors, including network bandwith, utilization,
message size, and send frequency.
All messages, except ones sent from a player to himself, are sent through the
host. Therefore, the host is one "hop" from any other player, and two non-host
players are always two "hops" apart.
Sending a message to a group is not as efficient as sending to everyone in the
game, or to a single player. It is usually more efficient than sending to each
individual in the group separately.
You CAN NOT send messages at VBL (or any other interrupt) time with NetSprocket
1.0. You should schedule a deferred system task, or just wait until system
task time before sending. You CAN however, call NSpMessage_Get at interrupt
time. We generally recommend against all interrupt-time calls to the Game
Sprockets.
The number of players in a NetSprocket game is limited only by memory (and
networking resources, such as available ports). If you exepect to handle lots
of players (14+), you need to make sure you give NetSprocket sufficient memory
and queue elements when you initialize it. If you get send failed or memory
error message from NetSprocket, try giving it more memory.
If you have a situation where your game has players whose network throughput is
greatly disparate, you need to make sure you don't choke the slow person. For
example, if you have 4 players on AppleTalk over Ethernet, and you have a fifth
player join the game over a 28.8k PPP connection, and your fast machines are
sending messages 30 times a second each, you're going to quickly gag the
newcomer with too much data, and the host will simply not be able to deliver
messages as quickly as you generate them. The newcomer will be disconnected
after approximately 20 messages have been queued up, waiting for flow control
to lift before delivering them. You can avoid this type of problem by
throttling down your game's send rate to allow the newcomer to participate.
You can also avoid it by sending "Junk" messages instead of Normal.
NetSprocket 1.0 does not implement Round-Trip-Time or throughput functions.
You can implement your own RTT and thruput functions on top of
the NetSprocket API yourself, though.
Known Bugs
----------
Host renegotiation does not work.